@@ -240,9 +240,11 @@ def DJANGO_FILE_UPLOAD_STORAGE_FUNC(request, file_path=None): |
||
| 240 | 240 |
def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
| 241 | 241 |
""" DJANGO FILE UPLOAD Callback Func """ |
| 242 | 242 |
import os |
| 243 |
+ |
|
| 243 | 244 |
from logs.models import MchLogInfo |
| 244 | 245 |
file_type = request.POST.get('file_type', '')
|
| 245 | 246 |
upload_qiniu = request.POST.get('upload_qiniu', '')
|
| 247 |
+ compress = bool(request.POST.get('compress', 0))
|
|
| 246 | 248 |
|
| 247 | 249 |
if file_type == 'logfile': |
| 248 | 250 |
optor_id = request.POST.get('optor_id', '')
|
@@ -259,7 +261,7 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
||
| 259 | 261 |
height = request.POST.get('height', 0)
|
| 260 | 262 |
file = request.FILES.get('file', '')
|
| 261 | 263 |
# upload_file_path('media/' + file_path, file_path, bucket='tamron')
|
| 262 |
- upload_file_req(file, file_path, bucket='tamron') |
|
| 264 |
+ upload_file_req(file, file_path, bucket='tamron', compress=compress) |
|
| 263 | 265 |
file_url = qiniu_file_url(file_path, bucket='tamron') |
| 264 | 266 |
|
| 265 | 267 |
return {
|
@@ -271,7 +273,7 @@ def DJANGO_FILE_UPLOAD_CALLBACK_FUNC(request, file_path=None, file_url=None): |
||
| 271 | 273 |
elif file_type == 'member_activity' or (file_type and upload_qiniu): |
| 272 | 274 |
file = request.FILES.get('file', '')
|
| 273 | 275 |
# upload_file_path('media/' + file_path, file_path, bucket='tamron')
|
| 274 |
- upload_file_req(file, file_path, bucket='tamron') |
|
| 276 |
+ upload_file_req(file, file_path, bucket='tamron', compress=compress) |
|
| 275 | 277 |
file_url = qiniu_file_url(file_path, bucket='tamron') |
| 276 | 278 |
|
| 277 | 279 |
return {
|
@@ -270,6 +270,9 @@ QINIU_FILE_URL_AFTER = 'http://img.tamron.kodo.com.cn' # QINIU_FILE_URL_HTTPS F |
||
| 270 | 270 |
FILE_UPLOAD_MAX_MEMORY_SIZE = 5242880 # InMemoryUploadedFile 文件最大值 |
| 271 | 271 |
FILE_UPLOAD_PERMISSIONS = 0o644 # TemporaryUploadedFile 文件权限设置 |
| 272 | 272 |
|
| 273 |
+# 图片压缩设置 |
|
| 274 |
+PNG_QUANT_FILE = '/home/paiai/work/pngquant-2.7.2/pngquant' |
|
| 275 |
+ |
|
| 273 | 276 |
# 唯一标识设置 |
| 274 | 277 |
CURTAIL_UUID_LENGTH = 7 # Used in django-curtail-uuid==1.0.0 |
| 275 | 278 |
|
@@ -8,6 +8,7 @@ jsonfield==3.1.0 |
||
| 8 | 8 |
mock==4.0.3 |
| 9 | 9 |
monetary==1.0.3 |
| 10 | 10 |
mysqlclient==2.1.1 |
| 11 |
+pngquant==1.0.7 |
|
| 11 | 12 |
pysnippets==1.1.4 |
| 12 | 13 |
pyzbar==0.1.9 |
| 13 | 14 |
qiniu==7.9.0 |
@@ -1,39 +1,46 @@ |
||
| 1 | 1 |
# -*- coding: utf-8 -*- |
| 2 | 2 |
|
| 3 |
+import pngquant |
|
| 3 | 4 |
import qiniu |
| 4 | 5 |
from django.conf import settings |
| 5 | 6 |
|
| 6 | 7 |
|
| 7 | 8 |
QINIU = settings.QINIU |
| 8 | 9 |
auth = qiniu.Auth(QINIU['access_key'], QINIU['secret_key']) |
| 10 |
+pngquant.config(settings.PNG_QUANT_FILE) |
|
| 9 | 11 |
|
| 10 | 12 |
|
| 11 |
-def upload(data, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default']): |
|
| 13 |
+def upload(data, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True): |
|
| 12 | 14 |
if not data: |
| 13 | 15 |
return '' |
| 16 |
+ if compress: |
|
| 17 |
+ try: |
|
| 18 |
+ data = pngquant.quant_data(data)[1] |
|
| 19 |
+ except Exception as e: |
|
| 20 |
+ pass |
|
| 14 | 21 |
token = auth.upload_token(bucket, key=key) |
| 15 | 22 |
ret, _ = qiniu.put_data(token, key, data, mime_type=mime_type) |
| 16 | 23 |
return ret.get('key')
|
| 17 | 24 |
|
| 18 | 25 |
|
| 19 |
-def upload_file_admin(obj, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default']): |
|
| 26 |
+def upload_file_admin(obj, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True): |
|
| 20 | 27 |
# Django Admin Upload |
| 21 | 28 |
if not obj.image: |
| 22 | 29 |
return '' |
| 23 | 30 |
obj.image.seek(0) |
| 24 |
- return upload(obj.image.read(), key=key or obj.image.name, mime_type=mime_type, bucket=bucket) |
|
| 31 |
+ return upload(obj.image.read(), key=key or obj.image.name, mime_type=mime_type, bucket=bucket, compress=compress) |
|
| 25 | 32 |
|
| 26 | 33 |
|
| 27 |
-def upload_file_req(file, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default']): |
|
| 34 |
+def upload_file_req(file, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True): |
|
| 28 | 35 |
# photo = request.FILES.get('photo', '')
|
| 29 | 36 |
# <InMemoryUploadedFile: photo.png (image/png)> |
| 30 | 37 |
if not file: |
| 31 | 38 |
return '' |
| 32 | 39 |
file.seek(0) |
| 33 |
- return upload(file.read(), key=key or file.name, mime_type=mime_type, bucket=bucket) |
|
| 40 |
+ return upload(file.read(), key=key or file.name, mime_type=mime_type, bucket=bucket, compress=compress) |
|
| 34 | 41 |
|
| 35 | 42 |
|
| 36 |
-def upload_file_path(path, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default']): |
|
| 43 |
+def upload_file_path(path, key=None, mime_type='application/octet-stream', bucket=QINIU['bucket_default'], compress=True): |
|
| 37 | 44 |
if not path: |
| 38 | 45 |
return '' |
| 39 | 46 |
token = auth.upload_token(bucket, key=key) |